﻿#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef char TDatatype;

typedef struct Tree
{
	TDatatype data;
	struct Tree* left;
	struct Tree* right;
}Tree;

//创造树形结点
Tree* MakeSpace(TDatatype x);

//前序遍历-----根左右
void PreOrder(Tree*root);
//中序遍历-----左根右
void MinOrder(Tree* root);
//后序遍历-----左右根
void PosOrder(Tree* root);

//二叉树结点个数
int BinaryTreeSize(Tree* root);
//二叉树叶子结点个数
int BinaryTreeLeafSize(Tree*root);
// ⼆叉树第k层结点个数
int BinaryTreeLevelKSize(Tree* root, int k);
//⼆叉树的深度/⾼度
int BinaryTreeDepth(Tree* root);
// ⼆叉树查找值为x的结点
Tree* BinaryTreeFind(Tree* root, TDatatype x);
// ⼆叉树销毁
void BinaryTreeDestory(Tree** root);
